package com.yugong.util;

import cn.hutool.core.util.HexUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import java.util.Base64.Encoder;

/**
 * 数据汇编工具类
 * MD5，Base64
 *
 * @author yugong
 * @date 2024/2/9
 */
@Slf4j
@Component
public class DigestUtils {
    /**
     * Base64加密
     *
     * @param decodeDate 需要加密的数据
     * @return 加密后的数据
     */
    public String base64Encode(String decodeDate) {
        Encoder encoder = Base64.getEncoder();
        return encoder.encodeToString(decodeDate.getBytes());
    }

    /**
     * Base64解密
     *
     * @param encodeDate 需要解密的数据
     * @return 解密后的数据
     */
    public String base64Decode(String encodeDate) {
        Base64.Decoder decoder = Base64.getDecoder();
        return new String(decoder.decode(encodeDate));
    }

    /**
     * MD5加密解密
     *
     * @param date 需要加密解密的数据
     * @return 加密解密后的数据
     */
    public String md5Digest(String date) {
        MessageDigest messageDigest = null;
        try {
            messageDigest = MessageDigest.getInstance("MD5");
        } catch (NoSuchAlgorithmException noSuchAlgorithmException) {
            log.info("没有设置算法异常：" + noSuchAlgorithmException.getMessage(), noSuchAlgorithmException);
        }
        if (messageDigest != null) {
            return HexUtil.encodeHexStr(messageDigest.digest(date.getBytes()));
        }
        return null;
    }
}
